import {
	defineStore
} from "pinia";

import  {$get as getData} from '@/utils/request'
//参数1：定义一个仓库的唯一id名，Pinia会将所有的容器挂载到根容器；参数2：选项对象
export const useMainStore = defineStore('main', {
	 // 所有数据持久化
	 // persist: true,
	 // 持久化存储插件其他配置
	 state: () => { //state必须是函数，是避免在服务端渲染时的交叉请求导致的状态数据污染；必须是箭头函数，为了更好的TS类型推导
	 	return {
	 		token:'',
			userInfo:'',
			linkType:[],
			learnType:[]
	 	}
	 },
	 getters: {
	 	//函数接受一个可选参数:state
	 	/*count10():number{   //在TS文件下，getters使用了this,则必须指定类型，否则会导致推导错误
	 	  return this.count += 12
	 	}*/
	 },
	 actions: {
	 	// changeState(num:number):void { //不要使用箭头函数定义action,因为箭头函数绑定外部this
	 	// 	this.count += num
	 	// 	this.count1 += num
	 	// }
		getLinkType(){
			getData('/link/type').then(res=>{
				if(res.code === 200){
					this.$patch(state=>{
						state.linkType = res.list
					})
				}
			})
		},
		getLearnType(){
			getData('/type').then(res=>{
				if(res.code === 200){
					this.$patch(state=>{
						state.learnType = res.list
					})
				}
			})
		}
	 },
	 persist: {
	   // 修改存储中使用的键名称，默认为当前 Store的 id
	   // key: 'count',
	   // 修改为 sessionStorage，默认为 localStorage
	   storage: window.sessionStorage,
	   // 部分持久化状态的点符号路径数组，[]意味着没有状态被持久化(默认为undefined，持久化整个状态)
	   // paths: ['nested.data'],
	 },
})

